#include <iostream>
#include <unistd.h>
#include<signal.h>
#include<sys/types.h>


using namespace std;

//使用手册
void Usage(string proc)
{
   cout<<"Usage:\n\t"<<proc<<"sigum pid\n\n";
}


//mykill signum pid
int main(int argc,char*argv[])
{
   if(argc!=3)//argc表示命令行参数数组有多少有效元素
   //mykill sigum pid 三个
   {
      Usage(argv[0]);
      exit(1);
   }
   int signum=stoi(argv[1]);
   pid_t pid = stoi(argv[2]);

   int n=kill(pid,signum);
   if(n=-1)
   {
       perror("kill");
       exit(2);
   }
}



// // int:收到了哪一个信号
// //定义必须这样的格式定义函数，方便内核调用
// void myhandler(int signo)
// {
//    cout << "process get a signal:" << signo<<endl;
//    exit(1);
// }

// int main()
// {
//    //自定义动作--信号的捕捉
//    //signal(SIGINT,myhandler); //只需要设置一次，往后都有效
//                //传函数指针，而不是调用，不用带参数

//    signal(SIGQUIT,myhandler);

//    //signal(SIGSTOP,myhandler);不是所有信号都能被捕捉的,9和19不能被捕捉

//    //信号的产生和我们自己的代码的运行是异步的，不用等待，自己执行自己的
//    //事件的发生与程序的主要执行流程彼此独立，不直接关联
//    // while (true)
//    // {
//    //    cout<<"hello"<<getpid()<<endl;
//    //    sleep(1);
//    // }
// }